package modelo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import jdbc.ConnectionFactory;

public class LivroDAOImp implements LivroDAO {
	private Connection connection;

	public LivroDAOImp() {
		this.connection = new ConnectionFactory().getConnection();
	}

	@Override
	public void cadastra(Livro livro) {
		String sql = "insert into livro (isbn, titulo, autor, editora, ano, numero_de_paginas, descricao)"
				+ "values (?,?,?,?,?,?,?)";

		try {
			PreparedStatement stmt = connection.prepareStatement(sql);

			stmt.setString(1, livro.getIsbn());
			stmt.setString(2, livro.getTitulo());
			stmt.setString(3, livro.getAutor());
			stmt.setString(4, livro.getEditora());
			stmt.setInt(5, livro.getAno());
			stmt.setInt(6, livro.getNumeroDePaginas());
			stmt.setString(7, livro.getDescricao());

			stmt.execute();
			stmt.close();

		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	@Override
	public List<Livro> listaLivros() {

		String sql = "select * from livro";

		try {
			List<Livro> livros = new ArrayList<Livro>();
			PreparedStatement stmt = connection.prepareStatement(sql);
			ResultSet rs = stmt.executeQuery();
			Livro livro = new Livro();

			while (rs.next()) {
				livro.setIsbn(rs.getString("isbn"));
				livro.setTitulo(rs.getString("titulo"));
				livro.setAutor(rs.getString("autor"));
				livro.setEditora(rs.getString("editora"));
				livro.setAno(rs.getInt("ano"));
				livro.setNumeroDePaginas(rs.getInt("numero_de_paginas"));
				livro.setDescricao(rs.getString("descricao"));

				livros.add(livro);
			}

			stmt.close();
			rs.close();
			return livros;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}

	}

	@Override
	public void remove(Livro livro) {
		// TODO Auto-generated method stub

	}

	@Override
	public void altera(Livro livro) {
		// TODO Auto-generated method stub

	}

}
